//路由鉴权，项目中路由能不能被访问的权限设置
import router from "./router";
import setting from "./setting";
//@ts-ignore
import nprogress from 'nprogress'
import "nprogress/nprogress.css"
//获取用户相关的小仓库token数据来判断用户是否登录成功

import pinia from "./store";
import useUserStore from "./store/modules/user";

let userStore=useUserStore(pinia);
console.log("JWT令牌");
console.log(userStore.token);



//全局前置守卫
router.beforeEach(async (to: any,from: any,next: any)=>{
    document.title=setting.title+'_'+to.meta.title;
    //访问某一个路由之前守卫
    //to你将要访问的那个路由
    //from：你从哪个路由而来
    //next：路由的放行函数

    nprogress.start();
    let token=userStore.token;
    //用户登录判断

    //获取用户名字
    let username=userStore.username;

    if(token){
    // if(true){
        if(to.path=='/login'){
            next({path: '/'})
        }
        else{
           //有用户信息，放行
           if(username){
            // if(true){
            next();
           }
           else{
            
            try{
                await userStore.userInfo();
                next({...to});
            }
            catch(error){
                //token过期：获取不到用户信息
                //用户手动修改本地存储token
                //退出登录->用户相关数据清空
                await userStore.userLogout();
                next({path: '/login',query: {redirect: to.path}});
            }
           }
        }
    }
    else{
        if(to.path=='/login'){
            next();
        }
        else{
            next({path: '/login',query: {redirect: to.path}});
        }
    }

    
})


//全局的后置守卫


router.afterEach((to: any,from: any)=>{
    nprogress.done();
})
//任意路由切换实现进度条业务
//路由鉴权
//用户未登录只能访问login，访问其他则指向login
//登录成功：不可以访问login，访问则指向首页